/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.streamerstudio.model.gstreamer.registry;

import org.gstreamer.ElementFactory;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Gst Element</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.streamerstudio.model.gstreamer.registry.GstElement#getPlugin <em>Plugin</em>}</li>
 *   <li>{@link org.streamerstudio.model.gstreamer.registry.GstElement#getAuthor <em>Author</em>}</li>
 *   <li>{@link org.streamerstudio.model.gstreamer.registry.GstElement#getLongName <em>Long Name</em>}</li>
 *   <li>{@link org.streamerstudio.model.gstreamer.registry.GstElement#getGlibClass <em>Glib Class</em>}</li>
 *   <li>{@link org.streamerstudio.model.gstreamer.registry.GstElement#getFactory <em>Factory</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.streamerstudio.model.gstreamer.registry.RegistryPackage#getGstElement()
 * @model
 * @generated
 */
public interface GstElement extends GstObject {
	/**
	 * Returns the value of the '<em><b>Plugin</b></em>' container reference.
	 * It is bidirectional and its opposite is '{@link org.streamerstudio.model.gstreamer.registry.GstPlugin#getElements <em>Elements</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Plugin</em>' container reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Plugin</em>' container reference.
	 * @see #setPlugin(GstPlugin)
	 * @see org.streamerstudio.model.gstreamer.registry.RegistryPackage#getGstElement_Plugin()
	 * @see org.streamerstudio.model.gstreamer.registry.GstPlugin#getElements
	 * @model opposite="elements" transient="false"
	 * @generated
	 */
	GstPlugin getPlugin();

	/**
	 * Sets the value of the '{@link org.streamerstudio.model.gstreamer.registry.GstElement#getPlugin <em>Plugin</em>}' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Plugin</em>' container reference.
	 * @see #getPlugin()
	 * @generated
	 */
	void setPlugin(GstPlugin value);

	/**
	 * Returns the value of the '<em><b>Author</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Author</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Author</em>' attribute.
	 * @see #setAuthor(String)
	 * @see org.streamerstudio.model.gstreamer.registry.RegistryPackage#getGstElement_Author()
	 * @model
	 * @generated
	 */
	String getAuthor();

	/**
	 * Sets the value of the '{@link org.streamerstudio.model.gstreamer.registry.GstElement#getAuthor <em>Author</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Author</em>' attribute.
	 * @see #getAuthor()
	 * @generated
	 */
	void setAuthor(String value);

	/**
	 * Returns the value of the '<em><b>Long Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Long Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Long Name</em>' attribute.
	 * @see #setLongName(String)
	 * @see org.streamerstudio.model.gstreamer.registry.RegistryPackage#getGstElement_LongName()
	 * @model
	 * @generated
	 */
	String getLongName();

	/**
	 * Sets the value of the '{@link org.streamerstudio.model.gstreamer.registry.GstElement#getLongName <em>Long Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Long Name</em>' attribute.
	 * @see #getLongName()
	 * @generated
	 */
	void setLongName(String value);

	/**
	 * Returns the value of the '<em><b>Glib Class</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Glib Class</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Glib Class</em>' attribute.
	 * @see #setGlibClass(String)
	 * @see org.streamerstudio.model.gstreamer.registry.RegistryPackage#getGstElement_GlibClass()
	 * @model
	 * @generated
	 */
	String getGlibClass();

	/**
	 * Sets the value of the '{@link org.streamerstudio.model.gstreamer.registry.GstElement#getGlibClass <em>Glib Class</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Glib Class</em>' attribute.
	 * @see #getGlibClass()
	 * @generated
	 */
	void setGlibClass(String value);

	/**
	 * Returns the value of the '<em><b>Factory</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Factory</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Factory</em>' attribute.
	 * @see #setFactory(ElementFactory)
	 * @see org.streamerstudio.model.gstreamer.registry.RegistryPackage#getGstElement_Factory()
	 * @model dataType="org.streamerstudio.model.gstreamer.ElementFactory" required="true"
	 * @generated
	 */
	ElementFactory getFactory();

	/**
	 * Sets the value of the '{@link org.streamerstudio.model.gstreamer.registry.GstElement#getFactory <em>Factory</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Factory</em>' attribute.
	 * @see #getFactory()
	 * @generated
	 */
	void setFactory(ElementFactory value);

} // GstElement
